package com.xzq.bugstack.util;

import com.xzq.bugstack.domain.*;

/**
 * @Author xzq
 * @Description // 消息构建工具
 * @Date 2021/11/20 17:06
 * @Version 1.0.0
 **/
public class MsgUtil {


    /**
     *  构建对象，请求传输文件(客户端)
     * @param fileUrl       客户端文件地址
     * @param fileName      文件名称
     * @param fileSize      文件大小
     * @return
     */
    public static FileTransferProtocol buildRequestTransferFile(String fileUrl, String fileName,Long fileSize) {
        FileDescInfo fileDescInfo = new FileDescInfo();
        fileDescInfo.setFileUrl(fileUrl);
        fileDescInfo.setFileName(fileName);
        fileDescInfo.setFileSize(fileSize);

        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        fileTransferProtocol.setTransferType(0);    //0 请求传输文件，1文件传输指令,2文件传输数据
        fileTransferProtocol.setTranferObj(fileDescInfo);

        return fileTransferProtocol;
    }

    /**
     * 构建对象，文件传输指令(服务端)
     * @param status            0 请求传文件 1文件传输指令 2文件传输数据
     * @param clientFileUrl
     * @param readPosition
     * @return
     */
    public static FileTransferProtocol buildTransferInstruct(Integer status, String clientFileUrl, Integer readPosition) {
        FileBurstInstruct fileBurstInstruct = new FileBurstInstruct();
        fileBurstInstruct.setStatus(status);
        fileBurstInstruct.setClientFileUrl(clientFileUrl);
        fileBurstInstruct.setReadPosition(readPosition);

        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTranferObj(fileBurstInstruct);

        return fileTransferProtocol;
    }

    /**
     *  构建对象   文件传输指令(服务端)
     * @param fileBurstInstruct
     * @return
     */
    public static FileTransferProtocol buildTransferInstruct(FileBurstInstruct fileBurstInstruct) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTranferObj(fileBurstInstruct);
        return fileTransferProtocol;
    }

    /**
     * 构建对象；  文件传输数据(客户端)
     * @param fileBurstData
     * @return
     */
    public static FileTransferProtocol buildTransferData(FileBurstData fileBurstData) {
        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.DATA);
        fileTransferProtocol.setTranferObj(fileBurstData);
        return fileTransferProtocol;
    }
}
